<?php

class Solicitudes_InformeparesController extends Zend_Controller_Action
{
	private $nav;
	private $infoPrograma;
	private $codproceso;
	private $datosproceso;
	private $codestado;
	private $datosinforme;
	private $datospar;
	private $sololectura;
	private $cambiarestado;
	private $infolista;
	private $infoListaFactores;
	private $tramitelista;
	
	private $finalizarinforme;
	private $_readonly;
	
	private $paresproceso;
	
    public function init() {
        $sesionProceso = new Zend_Session_Namespace("PROCESO");
		$this->codproceso = $sesionProceso->codproceso;
		
		$Proceso = new Solicitudes_Model_DetalleSolicitud();
        $this->datosproceso = $Proceso->cargardatosProceso($this->codproceso);
		
		$Programa = new Solicitudes_Model_DetalleSolicitud();
		$this->view->infoPrograma = $Programa->cargardatosPrograma($this->datosproceso["codprograma"]);
        $this->codestado =  $Programa->getEstadoProceso($this->codproceso);
    	$this->view->infoPrograma["codproceso"] = $this->codproceso;
    	$this->view->infoPrograma["codestado"] = $this->codestado;
    	
        $this->view->extensiones = $Programa->cargardatosPrograma("","",$this->view->infoPrograma["codprograma"]);
	    
	    if ($this->view->infoPrograma["extension"]==1){
	        if (!empty($this->view->infoPrograma["pro_codprograma"])){
	            $this->view->programaextiende = $Programa->cargardatosPrograma($this->view->infoPrograma["pro_codprograma"]);
	        }
	    }
    	        	
    	$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
        $this->nav->agregar_navegacion("Informe de pares","","");
		$this->view->nav = $this->nav;
		
		$this->tabs = new App_Util_Tabs ();
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>1),true);
		$this->tabs->agregar_vista ( "Consideraciones IES","/solicitudes/informepares/index/",$params,"Consideraciones Generales de la IES" );
		$this->tabs->agregar_vista ( "Consideraciones Programa","/solicitudes/informepares/consideracionesprograma","","Consideraciones del Programa");
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>2),true);
		$this->tabs->agregar_vista ( "Análisis autoevaluación","/solicitudes/informepares/index/",$params,"Análisis Crítico de la Autoevaluación" );
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>6),true);
		$this->tabs->agregar_vista ( "Valoración","/solicitudes/informepares/valoracionelemento","","Gradación en los juicios sobre la calidad alcanzada por el programa" );
//		$this->tabs->agregar_vista ( "Ponderación","/solicitudes/informepares/ponderacion","","Ponderación de factores y características" );
//		$this->tabs->agregar_vista ( "Gradación","#");
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>3),true);
		$this->tabs->agregar_vista ( "Fortalezas y debilidades","/solicitudes/informepares/index/",$params );
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>4),true);
		$this->tabs->agregar_vista ( "Juicio","/solicitudes/informepares/index/",$params );
		$params=App_Util_SafeUrl::encriptar(array("tipotexto"=>5),true);
		$this->tabs->agregar_vista ( "Recomendaciones","/solicitudes/informepares/index/",$params );
		$this->view->tabs = $this->tabs;
		
		$informeService = new Solicitudes_Model_Informe();
		$this->datosinforme = $informeService->getInformeProceso($this->codproceso);
		
		if (!$this->datosinforme){
		    $datos["codproceso"] = $this->codproceso;
		    $codinforme = $informeService->guardarInforme($datos);
		    $this->datosinforme = $informeService->getInforme($codinforme);
		}
  	    
		$paresService = new Visitas_Model_ParesProceso();

  	    $this->sololectura = false;
  	    $c = 0;  //cuenta cuantos pares han finalizado el informe
  	    $this->paresproceso = $paresService->getListaParesProceso($this->datosproceso["codproceso"],8);
  	    $this->view->abririnforme = "N";
  	    
  	    foreach($this->paresproceso as $key =>$value){
  	        if ($value["codusuario"]==App_User::getCodigoUsuario()){
  	            $this->datospar = $value;
  	            $this->view->abririnforme = $this->datospar["finalizarinforme"];
  	        }
  	        if ($value["finalizarinforme"]=="S"){
  	            $this->sololectura = true;
  	            $c++;
  	        }
  	    }
  	    $this->cambiarestado = false;
  	    
  	    if (count($this->paresproceso)==$c && $this->datospar["coordinador"]=="S"){
  	        $this->cambiarestado = true;
  	    }
  	    
  	    if (!empty($this->datosinforme["consideracionesies"])){
  	        $this->tabs->checkear("Consideraciones IES");
  	    }
  	    if (!empty($this->datosinforme["analisisautoevaluacion"])){
  	        $this->tabs->checkear("Análisis autoevaluación");
  	    }
  	    if (!empty($this->datosinforme["fortalezas"]) && !empty($this->datosinforme["debilidades"])){
  	        $this->tabs->checkear("Fortalezas y debilidades");
  	    }
      	if (!empty($this->datosinforme["juicio"])){
  	        $this->tabs->checkear("Juicio");
  	    }
      	if (!empty($this->datosinforme["recomendaciones"])){
  	        $this->tabs->checkear("Recomendaciones");
  	    }
  	    
  	    
  	    $serviceLista = new Listas_Model_DiligenciarListas();
        $listasService = new Listas_Model_Listas();
        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
        $actionConfig = Zend_Registry::get("actionConfig");
        $listas = $actionConfig->LISTA_INFORMACION->toArray();
        $lalista = $listas[$sesionSolicitud->tiposolicitud];
        $this->infoLista = $listasService->getListaActiva("A", $lalista);
        $this->tramitelista = $serviceLista->getTramiteLista($this->codproceso,$this->infoLista["codlista"]);
        
        if(isset($this->tramitelista["codtramitelista"])){
            if ($serviceLista->verificarInformacionAutoevaluacion($this->tramitelista["codtramitelista"])){
	            $this->tabs->checkear("Consideraciones Programa");
	        }
        }
	    
        $listasFactores = $actionConfig->LISTA_FACTORES->toArray();
        $lalistaFactores =  $listasFactores[$sesionSolicitud->tiposolicitud];
        
        $this->infoListaFactores = $listasService->getListaActiva("F",$lalistaFactores,$this->codproceso,"P");
        if (!$this->infoListaFactores){
            $infoLista = $listasService->getListaActiva("F",$lalistaFactores,NULL,"I",true);
            $codlista = $listasService->crearListaActiva("F",$lalistaFactores,$this->codproceso,$infoLista["codlista"],"P");
            $this->infoListaFactores = $listasService->getListaActiva("F",$lalistaFactores,$this->codproceso,"P");
        }

//        $escalasService = new Listas_Model_Escalas();
//    	if ($escalasService->getCountEscalasGradacionProceso($this->infoListaFactores["codlista"], $this->codproceso) &&
//            $serviceLista->verificarPonderacion($this->tramitelista["codtramitelista"])){
//            $this->tabs->checkear("Ponderación");
//            $this->tabs->agregar_vista ( "Gradación","/solicitudes/informepares/valoracionelemento","","Gradación en los juicios sobre la calidad alcanzada por el programa" );
//        }
        
//        $AutoevaluacionService = new Listas_Model_DiligenciarListas();
//    	$datos_diligencia["codlista"]= $this->infoLista["codlista"];
//    	$datos_diligencia["codproceso"]=$this->datosproceso["codproceso"];
//    	$datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
//        $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,1);
        
        $this->tramitelista = $serviceLista->getTramiteLista($this->codproceso,$this->infoListaFactores["codlista"]);

        
        if ($this->tramitelista && $serviceLista->verificarValoracion($this->tramitelista["codtramitelista"])){
            $this->tabs->checkear("Valoración");
        }
        
		//Resumen Informacion del programa (va en todos los actions)
		//$this->instituciones = new Instituciones_Model_Instituciones();
		//$infoinstitucion= $this->instituciones->cargardatosInfo($codinstitucion);
		//$this->view->infoInstitucion=$infoinstitucion;
        $this->_readonly = false;

		if (!in_array($this->codestado,array(Solicitudes_Model_Historicoprocesos::ESPERA_INFORME_PAR,
		                                     Solicitudes_Model_Historicoprocesos::CON_CONSEJERO_DESIGNADO,
		                                     Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR))) {
			$this->view->sololectura = $this->sololectura = $this->_readonly = true;
			$this->_helper->layout()->setLayout("popup");
		}else{
			if ($this->codestado == Solicitudes_Model_Historicoprocesos::ESPERA_INFORME_PAR && is_null($this->datospar)){
				$this->view->sololectura = $this->sololectura = $this->_readonly = true;
				$this->_helper->layout()->setLayout("popup");
		    }
		    
			if ($this->codestado == Solicitudes_Model_Historicoprocesos::CON_CONSEJERO_DESIGNADO && App_User::getCodigoPadreRol()!= Roles_Model_Roles::CODPADRE_CONSEJERO){
				$this->view->sololectura = $this->sololectura = $this->_readonly = true;
				$this->_helper->layout()->setLayout("popup");
		    }
			if ($this->codestado == Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR && App_User::getCodigoPadreRol()!= Roles_Model_Roles::CODPADRE_IES){
				$this->view->sololectura = $this->sololectura = $this->_readonly = true;
				$this->_helper->layout()->setLayout("popup");
		    }
		}
		
    }

    public function indexAction() {
        $array_campos = array(1=>"consideracionesies",2=>"analisisautoevaluacion",3=>"fortalezas",4=>"juicio",5=>"recomendaciones");
          
        $form = new Solicitudes_Form_Informe();
        $form->makeStatic($this->_readonly);
        
        $opcion = $this->_getParam("tipotexto");
        $forma = $this->_getParam("forma");
        $opcion = (empty($opcion))?1:$opcion;
        $datos["texto"] = $this->datosinforme[$array_campos[$opcion]];
        
        $datos["codinforme"] = $this->datosinforme["codinforme"];
        $datos["tipotexto"] = $opcion;
        $this->view->tipotexto = $opcion;
        
        switch($opcion){
            case "1":
                $this->tabs->actual( "Consideraciones IES" );
		        $this->view->texto = "Incluya algunas consideraciones generales sobre la institución de educación superior que ofrece el programa objeto ";
		        $this->view->texto .= "de la evaluación externa. Entre otros aspectos que considere fundamentales incluya por ejemplo, creación de la institución, ";
		        $this->view->texto .= "trayectoria, facultades o escuelas que actualmente funcionen, impacto de la institución en la región o localidad y su mayor fortaleza o característica.";
            break;
            case "2":
                $this->tabs->actual( "Análisis autoevaluación" );
                $this->view->texto = "Realizar un análisis detallado de la metodología utilizada, la participación de la comunidad de profesores,";
                $this->view->texto .= "estudiantes, administrativos, etc., en el proceso, diseño y uso adecuado de los instrumentos para la ";
                $this->view->texto .= "autoevaluación (talleres, foros, paneles de expertos, encuestas, etc.) Similarmente analizar la ponderación ";
                $this->view->texto .= "y gradación empleadas. Se puede apoyar en la Guía para Evaluación Externa con fines de Acreditación de Programas Académicos de Pregrado.";
            break;
            case "3":
                $this->tabs->actual( "Fortalezas y debilidades" );
		        $this->view->texto = "Establezca las fortalezas del programa evaluado.";
		        $datos["texto2"] = $this->datosinforme["debilidades"];
            break;
            case "4":
                $this->tabs->actual( "Juicio" );
		        $this->view->texto = "Emita el juicio explícito y preciso sobre la calidad del programa académico evaluado.";
            break;
            case "5":
                $this->tabs->actual( "Recomendaciones" );
		        $this->view->texto = "De manera específica establezca las recomendaciones académicas para el mejoramiento de la calidad del programa.";
            break;
        }
        
        $mensajes = 0;
        if ($forma==1){
            $form->recoverFromRedirect();
            $mensajes = $form->getMessages();
        }
        if (!$mensajes){
           $form->populate($datos);
        }
        
        if ($opcion!=3){
            $form->removeElement("textodebilidades");
            $form->removeElement("texto2");
        }
        
        $this->view->form = $form;
        $informeService = new Solicitudes_Model_Informe();
        $this->view->datos_adjunto = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],$opcion);
        $this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        
        
        if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_CONSEJERO,Roles_Model_Roles::CODPADRE_PAR))){
	        $datos_aclaraciones = $informeService->getAclaracionesInfome($this->datosinforme["codinforme"], $opcion);
	        if(count($datos_aclaraciones) == 0) {
	            $datos_aclaracion["codinforme"] = $this->datosinforme["codinforme"];
	            $datos_aclaracion["tipo"] = $opcion;
	        } else {
	            $datos_aclaracion = $datos_aclaraciones[0];
	        }
	        
	        $ver_aclaraciones = true;
	        
	        if ((App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_PAR) && (count($datos_aclaraciones)==0)) {
	            $ver_aclaraciones = false;
	        }
	        
	        if ($ver_aclaraciones){
		        $form2 = new Solicitudes_Form_Aclaraciones();
		        $form2->makeStatic($this->_readonly);
		        $mensajes2 = 0;
		        if($forma == 2) {
		            $form2->recoverFromRedirect();
		            $mensajes2 = $form2->getMessages();
		        }
		        
		        if (!$mensajes2){
		            if ($this->_readonly){
		                $datos_aclaracionreadonly["aclaracion"] = $datos_aclaracion["aclaracion"];
		                $form2->populate($datos_aclaracionreadonly);
		            }else{
		                $form2->populate($datos_aclaracion);
		            }
		        }
		        if (App_User::getCodigoPadreRol()!=Roles_Model_Roles::CODPADRE_CONSEJERO){
		            $form2->makeStatic(true);
		        }
		        $this->view->form2 = $form2;
	        }
        }
        
        if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_IES)) || $this->codestado >= Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR ){
            $form3 = new Solicitudes_Form_ComentariosRector();
            $form3->makeStatic($this->_readonly);
            $datos_comentarios["codinforme"] = $this->datosinforme["codinforme"];
            $datos_comentarios["comentariosrector"] = $this->datosinforme["comentariosrector"];
	        $datos_comentarios["tipo"] = $opcion;
        	$mensajes3 = 0;
	        if($forma == 3) {
	            $form3->recoverFromRedirect();
	            $mensajes3 = $form3->getMessages();
	        }
	        if (!$mensajes3){
	            if ($this->_readonly){
	                $datos_comentarios_readonly["comentariosrector"] = $this->datosinforme["comentariosrector"];
	                $form3->populate($datos_comentarios_readonly);
	            }else{
	                $form3->populate($datos_comentarios);
	            }
	        }
            $this->view->form3 = $form3;
            $this->view->datos_adjunto_rector = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],7);
        }
    }

   public function guardartextoAction() {
        $form = new Solicitudes_Form_Informe();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $informeService = new Solicitudes_Model_Informe();
                $datos = $this->getRequest()->getPost();
                $array_campos = array(1=>"consideracionesies",2=>"analisisautoevaluacion",3=>"fortalezas",4=>"juicio",5=>"recomendaciones");
                $datos[$array_campos[$datos["tipotexto"]]] = $datos["texto"];
                $informeService->guardarInforme($datos);
                
                if ($this->_getParam("tipotexto")==3){
                    $datos["debilidades"] = $datos["texto2"];
                    $informeService->guardarInforme($datos);
                }
                $datos_adj = $form->archivo->getFileInfo();
                if (!empty($datos_adj["archivo"]["name"])){
	                $ext = pathinfo($datos_adj["archivo"]["name"], PATHINFO_EXTENSION);
	                $nuevo_nombre = md5(uniqid() . $datos_adj["archivo"]["name"]) . "." . $ext;
	                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
	                if($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
	                    $datos_archivo["nombrereal"] = $datos_adj["archivo"]["name"];
	                    $datos_archivo["tipomime"] = $datos_adj["archivo"]["type"];
	                    $datos_archivo["tamano"] = $datos_adj["archivo"]["size"];
	                    $datos_archivo["nombrecodificado"] = $nuevo_nombre;
	                    $datos_archivo["codusuario"] = App_User::getCodigoUsuario();
	                    $datos_archivo["codinforme"] = $datos["codinforme"];
	                    $datos_archivo["tipo"] = $datos["tipotexto"];
	
	                    $informeService->guardarAdjuntoInforme($datos_archivo);
	                }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $parametros["tipotexto"]= $this->_getParam("tipotexto");
        $parametros["forma"]= 1;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
    public function eliminaradjuntoAction(){
  	      try {
			  $informeService = new Solicitudes_Model_Informe();
			  $informeService->eliminarAdjuntoInforme($this->_getParam("coddocumento"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $parametros["tipotexto"]= $this->_getParam("tipotexto");
		  if ($parametros["tipotexto"]==6){
		  	 $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }elseif ($parametros["tipotexto"]==7){
    	  	 $this->_helper->redirector("ponderacion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }elseif ($parametros["tipotexto"]==8){
    	  	 $this->_helper->redirector("valoracionelemento", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }else{
		  	$this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }
	}
	
	public function consideracionesprogramaAction(){
        $this->tabs->actual("Consideraciones Programa");
//        $listasService = new Listas_Model_Listas();
//        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
//        $actionConfig = Zend_Registry::get("actionConfig");
//        $listas = $actionConfig->LISTA_INFORMACION->toArray();
//        $lalista = $listas[$sesionSolicitud->tiposolicitud];
//        $infoLista = $listasService->getListaActiva("A", $lalista);
        
        $forma = $this->_getParam("forma");
        
        $form = new Solicitudes_Form_Informacion();
        $form->makeStatic($this->_readonly);
        if ($forma==1){
            $form->recoverFromRedirect();
        }
        if($this->infoLista) {
            $AutoevaluacionService = new Listas_Model_DiligenciarListas();
            $datos_diligencia["codlista"] = $this->infoLista["codlista"];
            $datos_diligencia["codproceso"] = $this->datosproceso["codproceso"];
            $datos_diligencia["codusuario"] = App_User::getCodigoUsuario();
            $datos_diligencia["tipolista"] = "A";
            
            $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia, 1);
            $codseccionlista = $this->_getParam("codseccionlista");
            if(empty($codseccionlista)) {
                $datos = $this->view->informacion[0];
                $this->view->key = 0;
            } else {
                foreach($this->view->informacion as $key => $value) {
                    if($value["codseccionlista"] == $codseccionlista) {
                        $datos = $this->view->informacion[$key];
                        $this->view->key = $key;
                    }
                }
            }
            $form->populate($datos);
            $this->view->adjuntos = $AutoevaluacionService->getAdjuntosSeccion($datos["codtramiteseccion"]);
        }
        $this->view->form = $form;
        $this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        $informeService = new Solicitudes_Model_Informe();
        
        if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_CONSEJERO,Roles_Model_Roles::CODPADRE_PAR))){
	        $opcion = 6;
	        $datos_aclaraciones = $informeService->getAclaracionesInfome($this->datosinforme["codinforme"], $opcion, $datos["codtramiteseccion"]);
	        if(count($datos_aclaraciones) == 0) {
	            $datos_aclaracion["codinforme"] = $this->datosinforme["codinforme"];
	            $datos_aclaracion["tipo"] = $opcion;
	            $datos_aclaracion["codtramiteseccion"] = $datos["codtramiteseccion"];
	        } else {
	            $datos_aclaracion = $datos_aclaraciones[0];
	        }
	        $datos_aclaracion["codseccionlista"] = $datos["codseccionlista"];
	        
	        $ver_aclaraciones = true;
	        
	        if ((App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_PAR) && (count($datos_aclaraciones)==0)) {
	            $ver_aclaraciones = false;
	        }
	        
	        if ($ver_aclaraciones){
		        $form2 = new Solicitudes_Form_Aclaraciones();
		        $form2->makeStatic($this->_readonly);
		        $mensajes2 = 0;
		        if($forma == 2) {
		            $form2->recoverFromRedirect();
		        }
		        $mensajes2 = $form2->getMessages();
		        if(count($mensajes2) == 0) {
		        	if ($this->_readonly){
		                $datos_aclaracionreadonly["aclaracion"] = $datos_aclaracion["aclaracion"];
		                $form2->populate($datos_aclaracionreadonly);
		            }else{
		                $form2->populate($datos_aclaracion);
		            }
		        }
		        if (App_User::getCodigoPadreRol()!=Roles_Model_Roles::CODPADRE_CONSEJERO){
		            $form2->makeStatic();
		        }
		        $this->view->form2 = $form2;
	        }
        }
        
	    if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_IES))){
	        $opcion = 6;
            $form3 = new Solicitudes_Form_ComentariosRector();
            $form3->makeStatic($this->_readonly);
            $datos_comentarios["codinforme"] = $this->datosinforme["codinforme"];
            $datos_comentarios["comentariosrector"] = $this->datosinforme["comentariosrector"];
	        $datos_comentarios["tipo"] = $opcion;
	        $datos_comentarios["codseccionlista"] = $datos["codseccionlista"];
	        
        	$mensajes3 = 0;
	        if($forma == 3) {
	            $form3->recoverFromRedirect();
	            $mensajes3 = $form3->getMessages();
	        }
	        if (!$mensajes3){
	        	if ($this->_readonly){
		            $datos_comentariosreadonly["comentariosrector"] = $this->datosinforme["comentariosrector"];
		            $form3->populate($datos_comentariosreadonly);
		        }else{
		            $form3->populate($datos_comentarios);
		        }
	        }
            $this->view->form3 = $form3;
            $this->view->tipotexto = $opcion;
        }
        $this->view->datos_adjunto_rector = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],7);
	}

	public function ponderacionAction(){
        $this->tabs->actual("Ponderación");
        
        $forma = $this->_getParam("forma");
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        
        $form1 = new Listas_Form_Gradacion();
        if ($this->_getParam("error")==2) $form1->recoverFromRedirect();
        
//        Zend_Debug::dump($this->infoListaFactores);
        
//        if ($infoLista["finalizada"]=="N"){
//	    	$sesionListas = new Zend_Session_Namespace("LISTAS");
//	    	$listasService = new Listas_Model_Listas();
//	    	$sesionListas->infoLista = $listasService->getLista($codlista);
//	    	$sesionListas->infoSeccion = null;
//	    	$this->_helper->redirector("index", "secciones","listas");
//        }else{
	        $escalasService = new Listas_Model_Escalas();
	        $codescala = $this->_getParam("codescala");
			if(!empty($codescala)){
				$form1->getElement("btnSubmit")->setLabel("Modificar");
				$form1->populate($escalasService->getEscala($codescala));
			}
	        $datos_escala["codlista"]= $this->infoListaFactores["codlista"];
	        $datos_escala["codproceso"]= $this->codproceso;
	        $form1->populate($datos_escala);
	        $form1->makeStatic($this->_readonly);
	        $this->view->form1 = $form1;
	        $this->view->datos = $escalasService->getEscalasGradacionProceso($this->infoListaFactores["codlista"], $this->codproceso);
//        }

            if ($this->infoListaFactores){
                $AutoevaluacionService = new Listas_Model_DiligenciarListas();
                
	            $datos_diligencia["codlista"]= $this->infoListaFactores["codlista"];
	            $datos_diligencia["codproceso"]=$this->codproceso;
	            $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	            
	            $opcion = 1;
	            $codseccionlista = $this->_getParam("codseccionlista");
	            if (!empty($codseccionlista)){
	                $datos_diligencia["codseccionlista"]=$codseccionlista;
	                $opcion = 2;
	                $this->view->codseccionlista = $codseccionlista;
	            }
	            
                $datos_tramitelista = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
                if ($opcion==1){
                    $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
                    foreach($datos_tramitelista as $key =>$tramiteseccion){
                        if ($AutoevaluacionService->verificarPonderacionElementosSeccion($tramiteseccion["codseccionlista"],$tramiteseccion["codtramitelista"]) &&
                            !empty($tramiteseccion["peso"])){
                            $datos_tramitelista[$key]["nombre"]= $tramiteseccion["nombre"]." <img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ";
                           }
                    }
                }
                
                $this->view->informacion = $datos_tramitelista;
                $datos_form = $AutoevaluacionService->CargarDatosForm($this->view->informacion,"PONDERACION");
                $datos_form["campocodigo"]= $opcion;
                $datos_form["codseccionlista"]= $codseccionlista;
            }
            $datos_form["paginacaracteristicas"]= "/solicitudes/informepares/ponderacion/";
            $form2 = new Listas_Form_Diligenciarsecciones(array("elementosSeccion"=>$this->view->informacion));
            $form2->recoverFromRedirect();
            $mensajes = $form2->getMessages();
            if (count($mensajes)==0){
                $form2->populate($datos_form);
            }
            $form2->makeStatic($this->_readonly);
            $this->view->form2 = $form2;
	        
	    $opcion = 7;
	    $informeService = new Solicitudes_Model_Informe();
//        $this->view->datos_adjunto = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],$opcion);
        $this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];

        if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_CONSEJERO,Roles_Model_Roles::CODPADRE_PAR))){
	        $datos_aclaraciones = $informeService->getAclaracionesInfome($this->datosinforme["codinforme"], $opcion);
	        if(count($datos_aclaraciones) == 0) {
	            $datos_aclaracion["codinforme"] = $this->datosinforme["codinforme"];
	            $datos_aclaracion["tipo"] = $opcion;
	        } else {
	            $datos_aclaracion = $datos_aclaraciones[0];
	        }
	        
	        $ver_aclaraciones = true;
	        
	        if ((App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_PAR) && (count($datos_aclaraciones)==0)) {
	            $ver_aclaraciones = false;
	        }
	        
	        if ($ver_aclaraciones){
		        $form3 = new Solicitudes_Form_Aclaraciones();
		        $form3->makeStatic($this->_readonly);
		        $mensajes3 = 0;
		        if($forma == 3) {
		            $form3->recoverFromRedirect();
		            $mensajes3 = $form3->getMessages();
		        }
	
		        if (!$mensajes3){
		            $form3->populate($datos_aclaracion);
		        	if ($this->_readonly){
		                $datos_aclaracionreadonly["aclaracion"] = $datos_aclaracion["aclaracion"];
		                $form2->populate($datos_aclaracionreadonly);
		            }else{
		                $form2->populate($datos_aclaracion);
		            }
		        }
		        if (App_User::getCodigoPadreRol()!=Roles_Model_Roles::CODPADRE_CONSEJERO){
		            $form3->makeStatic();
		        }
		        $this->view->form3 = $form3;
	        }
        }

        if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_IES))){
            $form4 = new Solicitudes_Form_ComentariosRector();
            $form4->makeStatic($this->_readonly);
            $datos_comentarios["codinforme"] = $this->datosinforme["codinforme"];
            $datos_comentarios["comentariosrector"] = $this->datosinforme["comentariosrector"];
	        $datos_comentarios["tipo"] = $opcion;
	        
        	$mensajes4 = 0;
	        if($forma == 3) {
	            $form4->recoverFromRedirect();
	            $mensajes4 = $form4->getMessages();
	        }
	        if (!$mensajes4){
	        	 if ($this->_readonly){
		            $datos_comentariosreadonly["comentariosrector"] = $this->datosinforme["comentariosrector"];
		            $form4->populate($datos_comentariosreadonly);
		        }else{
		            $form4->populate($datos_comentarios);
		        }
	        }
            $this->view->form4 = $form4;
            $this->view->tipotexto = $opcion;
        }
        $this->view->datos_adjunto_rector = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],7);
	}
	
//	public function valoracionelementoAction(){
//        $this->tabs->actual("Gradación");
//	}
	
    public function guardarsintesisAction() {
        $form = new Solicitudes_Form_Informacion();
        $codseccionlista = $this->_getParam("codseccionlista");
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $autoevaluacion = new Listas_Model_DiligenciarListas();
                $datos = $this->getRequest()->getPost();
                $datos["codusuario"] = App_User::getCodigoUsuario();
                $autoevaluacion->guardarTramiteSeccion ($datos);
                
                $datos_adj = $form->archivo->getFileInfo();
                if (!empty($datos_adj["archivo"]["name"])){
	                $ext = pathinfo($datos_adj["archivo"]["name"], PATHINFO_EXTENSION);
	                $nuevo_nombre = md5(uniqid() . $datos_adj["archivo"]["name"]) . "." . $ext;
	                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
	                if($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
	                    $datos_archivo["nombrereal"] = $datos_adj["archivo"]["name"];
	                    $datos_archivo["tipomime"] = $datos_adj["archivo"]["type"];
	                    $datos_archivo["tamano"] = $datos_adj["archivo"]["size"];
	                    $datos_archivo["nombrecodificado"] = $nuevo_nombre;
	                    $datos_archivo["codusuario"] = App_User::getCodigoUsuario();
	                    $datos_archivo["codtramiteseccion"] = $datos["codtramiteseccion"];
	
	                    $autoevaluacion->guardarAdjuntoSeccion($datos_archivo);
	                }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $parametros["codseccionlista"]= $codseccionlista;
        $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
    public function eliminaradjuntosintesisAction(){
  	      try {
			  $autoevaluacion = new Listas_Model_DiligenciarListas();
			  $autoevaluacion->eliminarAdjuntoSeccion($this->_getParam("coddocumento"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $parametros["codseccionlista"]= $this->_getParam("codseccionlista");
		  $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
    public function abrircerrarinformeAction(){
  	      try {
  	          $paresService = new Visitas_Model_ParesProceso();
  	          $arrayfinalizar = array("N"=>"S","S"=>"N");
  	          $datospar = array("codparproceso"=>$this->datospar["codparproceso"],"finalizarinforme"=>$arrayfinalizar[$this->datospar["finalizarinforme"]]);
  	          $paresService->guardar($datospar);
			  $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("index");
	}
	
  public function finalizarinformeparesAction() {
        try {
            $historico = new Solicitudes_Model_Historicoprocesos();
//            $datos_historico["codusuario"] = App_User::getCodigoUsuario();
	        $codestado  = Solicitudes_Model_Historicoprocesos::CON_INFORME_PAR;
	        $informeService = new Solicitudes_Model_Informe();
            if ($informeService->getAclaracionesInfome($this->datosinforme["codinforme"])){
                $codestado  = Solicitudes_Model_Historicoprocesos::CON_CONSEJERO_DESIGNADO;
            }
//            $datos_historico["codproceso"] = $this->datosproceso["codproceso"];
//            $historico->guardarHistorico($datos_historico);
            $historico->guardarEstadoProceso($this->datosproceso["codproceso"], $codestado);
            $msg ="El proceso de elaboración de informe de Evaluación Externa finalizó correctamente.
            	  Este informe será  revisado por el CNA y en caso de requerir complementación le será
            	  informado por medio del Sistema SACES-CNA";
            
            $this->view->priorityMessenger($msg, "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("lista","index");
    }
    
   public function guardaraclaracionAction() {
        $form = new Solicitudes_Form_Aclaraciones();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $informeService = new Solicitudes_Model_Informe();
                $datos = $this->getRequest()->getPost();
                if (empty($datos["codtramiteseccion"])){
                    unset($datos["codtramiteseccion"]);
                }
                $informeService->guardarAclaracion($datos);
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $codseccionlista = $this->_getParam("codseccionlista");
        $parametros["forma"]= 2;
        if (empty($codseccionlista)){
            $parametros["tipotexto"]= $this->_getParam("tipo");
            $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
        }else{
            $parametros["codseccionlista"]= $codseccionlista;
             $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
        }
    }
    
    public function resumenrevisioninformeAction(){
        $this->tabs->actual( "Consideraciones IES" );
        $informeService = new Solicitudes_Model_Informe();
        $this->view->datos = $informeService->getAclaracionesInfome($this->datosinforme["codinforme"]);
        $this->view->form = new Solicitudes_Form_FinalizarRevisionInforme();
        $this->view->form->makeStatic($this->_readonly);
    }
    
    public function eliminaraclaracionAction(){
  	      try {
			  $informeService = new Solicitudes_Model_Informe();
			  $informeService->eliminarAclaracion($this->_getParam("codaclaracion"));
			  $this->view->priorityMessenger("La solicitud de aclaración se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("resumenrevisioninforme");
	}
	
  public function finalizarrevisioninformeAction() {
        try {
            $historico = new Solicitudes_Model_Historicoprocesos();
            $codestado = $this->_getParam("codestado");
//            Zend_Debug::dump($codestado);
            $historico->guardarEstadoProceso($this->codproceso, $codestado);
            
//            Zend_Debug::dump($this->paresproceso);
            
            if ($codestado == Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR){
                $historicoPagoService = new Visitas_Model_HistoricoPagos();
                
                 foreach($this->paresproceso as $key =>$value){
          	        $datos["codparproceso"] = $value["codparproceso"];
          	        $datos["codestadopago"] = Visitas_Model_HistoricoPagos::RECOMENDADO;
          	        $datos["observacion"] = "Recomendación automática del sistema por aceptación del informe de pares por parte del Consejero.";
                    $historicoPagoService->guardarEstadoPago($datos);
          	    }
            }
            $this->view->priorityMessenger("El proceso de revisión finalizó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("lista","index");
    }
    
   public function guardarcomentariosrectorAction() {
        $form = new Solicitudes_Form_ComentariosRector();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $informeService = new Solicitudes_Model_Informe();
                $datos = $this->getRequest()->getPost();
                unset($datos["tipo"]);
                $informeService->guardarInforme($datos);
                
                $datos_adj = $form->archivo->getFileInfo();
                if (!empty($datos_adj["archivo"]["name"])){
	                $ext = pathinfo($datos_adj["archivo"]["name"], PATHINFO_EXTENSION);
	                $nuevo_nombre = md5(uniqid() . $datos_adj["archivo"]["name"]) . "." . $ext;
	                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
	                if($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
	                    $datos_archivo["nombrereal"] = $datos_adj["archivo"]["name"];
	                    $datos_archivo["tipomime"] = $datos_adj["archivo"]["type"];
	                    $datos_archivo["tamano"] = $datos_adj["archivo"]["size"];
	                    $datos_archivo["nombrecodificado"] = $nuevo_nombre;
	                    $datos_archivo["codusuario"] = App_User::getCodigoUsuario();
	                    $datos_archivo["codinforme"] = $datos["codinforme"];
	                    $datos_archivo["tipo"] = 7;
	
	                    $informeService->guardarAdjuntoInforme($datos_archivo);
	                }
                }
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
                
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $codseccionlista = $this->_getParam("codseccionlista");
        $parametros["forma"]= 3;
        $parametros["codseccionlista"]= $codseccionlista;
        
//        if (empty($codseccionlista)){
//            $parametros["tipotexto"]= $this->_getParam("tipo");
//            $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
//        }else{
//            $parametros["codseccionlista"]= $codseccionlista;
//             $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
//        }
        
   		  $parametros["tipotexto"]= $this->_getParam("tipo");
		  if ($parametros["tipotexto"]==6){
		  	 $this->_helper->redirector("consideracionesprograma", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }elseif ($parametros["tipotexto"]==7){
    	  	 $this->_helper->redirector("ponderacion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }elseif ($parametros["tipotexto"]==8){
    	  	 $this->_helper->redirector("valoracionelemento", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }else{
		  	$this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    	  }
        
    }
    
  public function finalizarcomentariosrectorAction() {
        try {
            $historico = new Solicitudes_Model_Historicoprocesos();
            $historico->guardarEstadoProceso($this->codproceso,Solicitudes_Model_Historicoprocesos::CON_COMENTARIOS_DEL_RECTOR);
            $this->view->priorityMessenger("El proceso de comentarios del rector finalizó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("lista","index");
    }
    
	public function guardarescalasAction() {
	    $form = new Listas_Form_Gradacion();
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $escalasService = new Listas_Model_Escalas();
                $escalasService->validarEscalasGradacion($form->getValues());
                $escalasService->guardarEscala($form->getValues());
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$this->_helper->redirector("ponderacion");
	}

	public function guardarcnaescalasAction() {
        try {
            $escalasService = new Listas_Model_Escalas();
            $codlista=$this->infoListaFactores["codlista"];
            
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE PLENAMENTE","gradononumerico"=>"A","pesoinferior"=>4.5,"pesosuperior"=>5,"porcentajeinferior"=>80,"porcentajesuperior"=>100);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE EN ALTO GRADO","gradononumerico"=>"B","pesoinferior"=>3.5,"pesosuperior"=>4.4,"porcentajeinferior"=>60,"porcentajesuperior"=>79);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE ACEPTABLEMENTE","gradononumerico"=>"C","pesoinferior"=>3,"pesosuperior"=>3.4,"porcentajeinferior"=>40,"porcentajesuperior"=>59);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE INSATISFACTORIAMENTE","gradononumerico"=>"D","pesoinferior"=>2,"pesosuperior"=>2.9,"porcentajeinferior"=>20,"porcentajesuperior"=>39);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"NO SE CUMPLE","gradononumerico"=>"E","pesoinferior"=>1,"pesosuperior"=>1.9,"porcentajeinferior"=>10,"porcentajesuperior"=>19);
            
            foreach($datos_escala as $key =>$datos){
                $escalasService->guardarEscala($datos);
            }
            $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
         } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
		$this->_helper->redirector("ponderacion");
	}
	
	public function eliminarescalaAction() {
		try {
		    $escalasService = new Listas_Model_Escalas();
			$escalasService->eliminarEscala($this->_getParam("codescala"));
			$this->view->priorityMessenger("La escala se ha eliminado", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->redirector("ponderacion");
	}
	
	public function guardarponderacionAction() {
	    $parametros= array();
    	if ($this->infoListaFactores){
	        $AutoevaluacionService = new Listas_Model_DiligenciarListas();
	        
	        $datos_diligencia["codlista"]= $this->infoListaFactores["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
    	    $opcion = 1;
    	    $campocodigo = $this->_getParam("campocodigo");
    	    $codseccionlista = $this->_getParam("codseccionlista");
    	    
    	    if (!empty($codseccionlista)){
    	        $datos_diligencia["codseccionlista"]=$codseccionlista;
    	        $parametros["codseccionlista"]=$codseccionlista;
    	         $opcion = 2;
    	    }
            $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $form = new Listas_Form_Diligenciarsecciones(array("elementosSeccion"=>$this->view->informacion));
		    
		    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
		        if(!$AutoevaluacionService->validarTotalPeso($this->getRequest()->getPost())) {
					$form->getElement("totalpeso")->addError("La suma de las cantidades de pesos debe ser igual a 100%");
					if ($campocodigo==2)$parametros["codseccionlista"]=$codseccionlista;
					$form->setStateRedirect();
				} else {
		            try {
		                $datos = $this->getRequest()->getPost();
		                unset($datos["campocodigo"]);
		                unset($datos["codseccionlista"]);
		                
		                foreach($datos as $key =>$value){
		                    list($campo,$codigo) = explode("_",$key);
		                    $datos_insert[$campo] = $value;
		                    if ($campo=="justificacionpeso"){
		                        if ($campocodigo==1){
			                        $datos_insert["codtramiteseccion"] = $codigo;
			                        $AutoevaluacionService->guardarTramiteSeccion ($datos_insert);
		                        }else{
			                        $datos_insert["codtramiteelemento"] = $codigo;
			                        $datos_insert["codusuario"] = App_User::getCodigoUsuario();
			                        $AutoevaluacionService->guardarTramiteElemento($datos_insert);
			                        $parametros["codseccionlista"]=$codseccionlista;
			                     }
		                    }
	                    }
		                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
		            } catch(Exception $e) {
		                $this->view->priorityMessenger($e->getMessage(), "error");
		            }
				}
	        }else{
	            $form->setStateRedirect();
	        }
    	}
		$this->_helper->redirector("ponderacion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function valoracionelementoAction() {
		$this->tabs->actual("Valoración");
		$this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        if ($this->infoListaFactores){
	        $CompletitudService = new Listas_Model_DiligenciarListas();
	        $datos_diligencia["codlista"]= $this->infoListaFactores["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();

	        $opcion = 3;

	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $this->view->valoracion = $secciones;
	        $this->view->completo = true;
	        $this->view->finalizar = true;
	        $this->view->datos_menu = array();
	        $elements = array();
            $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
	        
	        $a = $secciones[0]["codtramiteseccion"];
	        if (!empty($secciones[0]["justificacion"]))
	            $b = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        else
	            $b = $secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        $this->view->datos_menu[$a] = array("nombreseccion"=>$b);
	        $this->view->datos_menu[$a]["checkelementos"]=true;
            $completitud_seccion = true;
            
	        $codtramiteelemento = $this->_getParam("codtramiteelemento");
	        $elkey = 0;
            $check_seccion = true;
            $this->view->columnas=0;
            
	        foreach ($secciones as $key =>$datosseccion){
	            if (!isset($this->view->datos_menu[$datosseccion["codtramiteseccion"]])){
	                if (!empty($datosseccion["justificacion"])){
	                    $nombre_seccion = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
	                }else{
                        $nombre_seccion = $datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                    }
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]] = array("nombreseccion"=>$nombre_seccion);
                    $this->view->datos_menu[$a]["elementos"]=$elements;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=true;
                    unset($elements);
                    $a= $datosseccion["codtramiteseccion"];
                    $check_seccion = true;
	            }
	            if (!empty($codtramiteelemento) && $codtramiteelemento==$datosseccion["codtramiteelemento"]){
	                $elkey = $key;
	            }
	            $img = "";
	            if (!empty($datosseccion["justificacionvaloracion"])){
	                $img = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ";
	            }else{
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=false;
	                $this->view->completo = false;
	            }
                $elements[$datosseccion["codtramiteelemento"]]= $img.$datosseccion["ordenelemento"].". ".$datosseccion["nombre"];
                
                if ($datosseccion["ordenelemento"]>$this->view->columnas) $this->view->columnas=$datosseccion["ordenelemento"];
                
//                if (empty($datosseccion["escala"])) $this->view->completo = false;
	        }
	        $this->view->datos_menu[$a]["elementos"]=$elements;
    	    
//	        $escalasService = new Listas_Model_Escalas();
//            $escala = $escalasService->getEscalasDiligencia($this->infoListaFactores["codlista"],$this->codproceso);
            
            $this->view->nombreseccion = "FACTOR ".$secciones[$elkey]["ordenseccion"]." : ".$secciones[$elkey]["nombreseccion"];
            $this->view->nombrecaracteristica = "CARACTERISTICA ".$secciones[$elkey]["ordenelemento"]." : ".$secciones[$elkey]["nombre"];
            
    	    $form = new Solicitudes_Form_Valoracionpar();
    	    $form->recoverFromRedirect();
    	    $form->populate($secciones[$elkey]);
    	    $form->makeStatic($this->_readonly);
    	    $this->view->form = $form;
        	    
//    	    $this->view->nombre_escala = "NO HA SIDO VALORADO";
//    	    if (!empty($secciones[$elkey]["codescala"])){
//    	        $datos_escala = $escalasService->getEscala($secciones[$elkey]["codescala"]);
//    	        $this->view->nombre_escala = $datos_escala["nombre"];
//    	    }
    	}
    	
	    if (in_array(App_User::getCodigoPadreRol(),array(Roles_Model_Roles::CODPADRE_IES)) || $this->codestado >= Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR ){
            
	    	$form3 = new Solicitudes_Form_ComentariosRector();
            $form3->makeStatic($this->_readonly);
            $datos_comentarios["codinforme"] = $this->datosinforme["codinforme"];
            $datos_comentarios["comentariosrector"] = $this->datosinforme["comentariosrector"];
	        $datos_comentarios["tipo"] = 8;
        	$mensajes3 = 0;
	        if($forma == 3) {
	            $form3->recoverFromRedirect();
	            $mensajes3 = $form3->getMessages();
	        }
	        if (!$mensajes3){
	            if ($this->_readonly){
	                $datos_comentarios_readonly["comentariosrector"] = $this->datosinforme["comentariosrector"];
	                $form3->populate($datos_comentarios_readonly);
	            }else{
	                $form3->populate($datos_comentarios);
	            }
	        }
            $informeService = new Solicitudes_Model_Informe();
	        $this->view->form3 = $form3;
            $this->view->datos_adjunto_rector = $informeService->getAdjuntosInforme($this->datosinforme["codinforme"],7);
            $this->view->tipotexto = 8;
        }
	}
	
	public function guardarvaloracionelementoAction(){
        $form = new Solicitudes_Form_Valoracionpar();
		    
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $valoracionService = new Listas_Model_DiligenciarListas();
                $datos = $this->getRequest()->getPost();
                unset($datos["codtramiteseccion"]);
                $datos["codusuario"] = App_User::getCodigoUsuario();
                $valoracionService->guardarTramiteElemento($datos);
                $valoracionService->actualizarValoracionSeccion($datos["codtramiteelemento"],$this->_getParam("codtramiteseccion"),$this->infoListaFactores["codlista"]);
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$parametros["codtramiteelemento"]=$this->_getParam("codtramiteelemento");
		$this->_helper->redirector("valoracionelemento", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function valoracionseccionAction() {
		$this->tabs->actual("Valoración");
        $this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        if ($this->infoListaFactores){
	        $CompletitudService = new Listas_Model_DiligenciarListas();
	                
	        $datos_diligencia["codlista"]= $this->infoListaFactores["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
	        $opcion = 3;
	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $this->view->valoracion = $secciones;
	        $this->view->completo = true;
            
	        $this->view->resumen_seccion = array();
	        $this->view->columnas=0;
	        
	        $this->view->datos_menu = array();
	        $elements = array();
            $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
	        
	        $a = $secciones[0]["codtramiteseccion"];
	        if (!empty($secciones[0]["justificacion"]))
	            $b = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        else
	            $b = $secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	            
	        $this->view->datos_menu[$a] = array("nombreseccion"=>$b);
	        $this->view->datos_menu[$a]["checkelementos"]=true;
            
	        $codtramiteseccion = $this->_getParam("codtramiteseccion");
	        $elkey = 0;
            $check_seccion = true;
            
	        foreach ($secciones as $key =>$datosseccion){
	            if (!isset($this->view->datos_menu[$datosseccion["codtramiteseccion"]])){
	                if (!empty($datosseccion["justificacion"]))
	                    $nombre_seccion = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                    else
                        $nombre_seccion = $datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                        	                
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]] = array("nombreseccion"=>$nombre_seccion);
                    $this->view->datos_menu[$a]["elementos"]=$elements;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=true;
                    unset($elements);
                    $a= $datosseccion["codtramiteseccion"];
                    $check_seccion = true;
	            }
	            if (!empty($codtramiteseccion) && $codtramiteseccion==$datosseccion["codtramiteseccion"]){
	                $elkey = $key;
	            }
	            $img = "";
	            if (!empty($datosseccion["justificacion"])){
	                $img = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ";
	            }else{
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=false;
                    $this->view->completo = false;
	            }
	            $elements[$datosseccion["codtramiteelemento"]]= $img.$datosseccion["ordenelemento"].". ".$datosseccion["nombre"];
                
                if ($codtramiteseccion==$datosseccion["codtramiteseccion"]){
                    $this->view->resumen_seccion[]= $datosseccion;
                }
                
                if ($datosseccion["ordenelemento"]>$this->view->columnas) $this->view->columnas=$datosseccion["ordenelemento"];
//                if (empty($datosseccion["escala"])) $this->view->completo = false;
	        }
	        $this->view->datos_menu[$a]["elementos"]=$elements;
    	    
            $this->view->nombreseccion = "FACTOR ".$secciones[$elkey]["ordenseccion"]." : ".$secciones[$elkey]["nombreseccion"];
            
            $datos_form["codtramiteseccion"] = $secciones[$elkey]["codtramiteseccion"];
//            $datos_form["codescala"] = $secciones[$elkey]["escala"];
//            $datos_form["txtescala"] = $secciones[$elkey]["escalas"];
//            $datos_form["valoracion"] = $secciones[$elkey]["val"];
            $datos_form["justificacionvaloracion"] = $secciones[$elkey]["justificacion"];

            $datos_form["txtvaloracion"] = $secciones[$elkey]["val"];
            
    	    $form = new Solicitudes_Form_Valoracionpar();
//    	    $form = new Solicitudes_Form_ValoracionSeccion();
//    	    $form->getElement("txtescala")->setLabel("FACTOR ".$secciones[$elkey]["ordenseccion"].". ".$secciones[$elkey]["nombreseccion"]);
    	    $form->recoverFromRedirect();
    	    $form->populate($datos_form);
    	    $form->makeStatic($this->_readonly);
    	    $this->view->form = $form;
                    	 
    	}
	}
	
	public function guardarvaloracionseccionAction(){
        
        $form = new Solicitudes_Form_Valoracionpar();
		    
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
//	        if(!$escalasService->validargrado($this->_getParam("codescala"),$this->_getParam("valoracion"))) {
//			    $form->getElement("valoracion")->addError("El grado de cumplimiento debe estar dentro de los rangos establecidos en la escala");
//				$form->setStateRedirect();
//			} else {
	            try {
	                $valoracionService = new Listas_Model_DiligenciarListas();
	                $datos = $this->getRequest()->getPost();
	                unset($datos["codtramiteelemento"]);
	                $datos["codusuario"] = App_User::getCodigoUsuario();
	                $valoracionService->guardarTramiteSeccion($datos);
	                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
	            } catch(Exception $e) {
	                $this->view->priorityMessenger($e->getMessage(), "error");
//	                echo $e->getMessage();
	            }
//		    }
        }else{
            $form->setStateRedirect();
        }
//        exit();
		$parametros["codtramiteseccion"]=$this->_getParam("codtramiteseccion");
		$this->_helper->redirector("valoracionseccion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function valoracionglobalAction() {
		$this->tabs->actual("Valoración");
        $this->view->sololectura = $this->sololectura;
        $this->view->cambiarestado = $this->cambiarestado;
//        $this->view->abririnforme = $this->datospar["finalizarinforme"];
        
        $CompletitudService = new Listas_Model_DiligenciarListas();
        if ($this->infoListaFactores){
	        $datos_diligencia["codlista"]= $this->infoListaFactores["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
	        $opcion = 3;
	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        $this->view->valoracion = $secciones;
	        $datos_form["codtramitelista"]= $secciones[0]["codtramitelista"];
	        $this->view->juicioglobal = $CompletitudService->actualizarValoracionGlobal($secciones[0]["codtramitelista"],$this->infoListaFactores["codlista"]);
	        
	        $this->view->datos_adjunto = $CompletitudService->getAdjuntosTramite($secciones[0]["codtramitelista"]);
	        
        }
        
//        $this->tramitelista = $CompletitudService->getTramiteLista($this->codproceso,$this->infoListaFactores["codlista"]);
        
        $form = new Listas_Form_DocumentoTramiteLista();
        $this->view->form = $form;
        $form->recoverFromRedirect();
        $form->makeStatic($this->_readonly);
    	$form->populate($this->tramitelista);
	}
	
	public function guardarvaloracionglobalAction(){
        $form = new Listas_Form_DocumentoTramiteLista();
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $valoracionService = new Listas_Model_DiligenciarListas();
                $valoracionService->guardarTramiteLista($this->getRequest()->getPost());
                
                    $datos_adj = $form->archivo->getFileInfo();
				    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
				    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
                    $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
				    
				    if ($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
					    $SintesisTable = new Solicitudes_Model_DetalleSolicitud();
				         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
				         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
				         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
				         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
				         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
						 $datos_archivo["codtramitelista"]  = $this->_getParam("codtramitelista");
						 $datos_archivo["nombre"]  = $this->_getParam("nombre");
						 $datos_archivo["descripcion"]  = $this->_getParam("descripcion");

						 $valoracionService->guardarAdjuntoTramite($datos_archivo);
				    }
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$this->_helper->redirector("valoracionglobal");
	}
	
    public function eliminaradjuntotramiteAction(){
  	      try {
			  $valoracionService = new Listas_Model_DiligenciarListas();
			  $valoracionService->eliminarAdjuntoTramite($this->_getParam("coddocumento"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("valoracionglobal");
	}

	
   public function descargarwordAction() {
       	$informeService = new Solicitudes_Model_Informe();
       	
        $codlista1 = "";
        if ($this->infoListaFactores["codlista"]){
            $codlista1 = $this->infoLista["codlista"];
        }
        $codlista2 = "";
        if ($this->infoListaFactores["codlista"]){
            $codlista2 = $this->infoListaFactores["codlista"];
        }
       	
        
        $this->datosinforme["justificacionvaloracion"] = $this->tramitelista["justificacionvaloracion"];
       	$html = $informeService->descargarWord($this->view->infoPrograma, $this->datosinforme, $this->codproceso,App_User::getCodigoUsuario(),$codlista1,$codlista2);
       	
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		$this->getResponse()->clearBody();
		$this->getResponse()->clearAllHeaders();
	    header("Content-type: application/msword");
        header("Content-Disposition: attachment; filename=autoevaluacion.doc" );
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
        header("Pragma: public");
        print $html;
    }
    
}